package org.tools.collection;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

/** 
 * 集合工具类<br>
 * 常用工具方法请使用java.util.Collections
 *
 * <pre> 
 * 构建组：e-tools
 * 作者：eddy
 * 邮箱：1546077710@qq.com
 * 日期：2017年4月23日-下午5:56:06
 * 版权：E源时代
 * </pre>
 */
public class CollectionUtil {
	
	/**
	 * 深层复制
	 *
	 * @param src
	 * @return
	 * @throws IOException
	 * @throws ClassNotFoundException 
	 */
	public static <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException {
	    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
	    ObjectOutputStream out = new ObjectOutputStream(byteOut);
	    out.writeObject(src);
	  
	    ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
	    ObjectInputStream in = new ObjectInputStream(byteIn);
	    @SuppressWarnings("unchecked")
	    List<T> dest = (List<T>) in.readObject();
	    return dest;
	}  
}
